The present invention relates in general to microprocessors, and in particular to a multipurpose arithmetic functional unit for a processor core with single-precision and double-precision operations.
Real-time computer animation places extreme demands on processors. To meet these demands, dedicated graphics processing units typically implement a highly parallel architecture in which a number (e.g., 16) of cores operate in parallel, with each core including multiple (e.g., 8) parallel pipelines containing functional units for performing the operations supported by the processing unit. These operations generally include various integer and floating point arithmetic operations such as addition; multiplication; various algebraic, transcendental, and trigonometric functions; and planar attribute interpolation. The pipelines are generally of identical design so that any supported instruction can be processed by any pipeline; accordingly, each pipeline requires a complete set of functional units.
Conventionally, each functional unit is specialized to handle only one or two operations, and the pipelines usually provide sequential arrangements of functional units designed to optimize execution time for an expected sequence of operations (e.g., for vertex or fragment shading operations). For example, the functional units in a pipeline might include an attribute interpolation unit, followed by a texture computation unit, followed by various arithmetic units for computing sums, products, logarithms, exponents, trigonometric functions, and the like. Each of these functional units consumes chip area and power, adding to the design complexity and cost. Further, because it is specialized, a given functional unit is useful only a fraction of the time. It would, therefore, be desirable to provide functional units capable of a greater variety of operations.
Conventional functional units for graphics processors are also designed to operate on “single-precision” (e.g., 32-bit) operands and produce single-precision results. Operating at double precision generally requires wider adders and larger multipliers than single-precision operations. These double-precision circuits can be used for single-precision arithmetic, in some instances at the price of additional complexity. Some processors include separate single-precision and double-precision functional units, but providing two sets of functional units increases chip area and costs.
Graphics applications, at least at present, do not generally use double precision. However, there is interest in leveraging graphics processors for general-purpose computations, which often do require double precision. It would, therefore, be desirable to provide functional units capable of single-precision and double-precision operations at low additional cost, allowing graphics processors to be used for a wider range of computational tasks.